﻿/*************************************************************************************

- CLR版本：        4.0.30319.42000
- 类 名 称：       ReadImage
- 机器名称：       YTE
- 命名空间：       LD.Tool.Vision
- 文 件 名：       ReadImage
- 创建时间：       2022/7/14 15:11:16
- 作    者：       YTE
- 说   明：
- 修改时间：
- 修 改 人：
  *************************************************************************************/

using HalconDotNet;
using LD.Host;
using LD.Vision;
using System;
using System.ComponentModel;
using System.IO;

namespace LD.Tool
{
    [Tool(FrmParam = "ToolReadImageFrm", Text = "采集图像", ToolType = ToolEnum.Vision)]

    class ToolReadImage : BaseTool
    {
        public override OpResult Execute(TB_Tool model)
        {
            stopwatch.Start();
            try
            {
                var param = Newtonsoft.Json.JsonConvert.DeserializeObject<ReadImageParam>(model.Param);
                if (param != null)
                {
                    相机 = param.CameraName;
                    if (param.CameraUsing)
                    {
                        var camera = CameraFactory.Instance.CameraList[param.Camera];
                        var success = camera.Trigger();
                        if (success)
                            isSuccess = true;
                    }
                    else
                    {
                        //读取图片路径
                        if (!string.IsNullOrEmpty(param.ImagePath))
                        {
                            if (File.Exists(param.ImagePath))
                            {
                                //此处读图很慢，后续优化
                                HImage hImage = new HImage(param.ImagePath);
                                图像 = hImage.CopyImage();
                                灰度图像 = hImage.Rgb1ToGray();

                                FrmVisionMain.Instance.HWindow[param.CameraName].Image = hImage;
                                if (param.ConvertGray)
                                {
                                    FrmVisionMain.Instance.HWindow[param.CameraName].Image = hImage.Rgb1ToGray();
                                }

                                hImage.Dispose();
                                isSuccess = true;
                            }
                        }
                    }
                }
                Log(model, "运行结束", LogLevel.一般);
            }
            catch (Exception ex)
            {
                Log(model, ex.Message, LogLevel.严重);
            }
            finally
            {
                stopwatch.Stop();
            }

            //base.GetFlowResultField();

            return new OpResult() { IsSuccess = isSuccess, ExecuteTime = stopwatch.ElapsedMilliseconds };
        }

        [Tool(Output = true)]
        public HImage 图像 { get; set; }
        [Tool(Output = true)]
        public HImage 灰度图像 { get; set; }
        [Tool(Output = true)]
        public string 相机 { get; set; }
    }
}
